package com.sync.data.common.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author liquanchang
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface FieldProps {

    /**
     * 字段类型
     */
    FieldType type();

    /**
     * 渲染类型
     */
    RenderType renderType() default RenderType.Input;

    String renderTypeStr() default "";

    /**
     * 展示类型
     */
    RenderAs renderAs() default RenderAs.Text;

    /**
     * 字段描述
     */
    String label() default "";

    /**
     * 是否显示
     */
    boolean display() default true;

    /**
     * 是否必填
     */
    boolean notNull() default false;

    /**
     * 是否只读
     */
    boolean readOnly() default false;

    /**
     * 是否多选
     */
    boolean multiple() default false;

    /**
     * 级联绑定对象
     */
    String cascadeObject() default "";

    /**
     * group对象
     */
    String groupObject() default "";

    /**
     * group对象级别
     */
    int groupLevel() default 0;

    /**
     * 级联级别
     */
    int cascadeLevel() default 0;

    /**
     * 占用页面的大小
     */
    int span() default 0;

    /**
     * 共享字典值
     */
    String shareDict() default "";

    /**
     * 字段图标
     */
    String icon() default "description";

    /**
     * 字段描述
     */
    String sourceObject() default "";

    /**
     * 要取的source对象的
     */
    String sourceObjectAttribute() default "id";

    /**
     * 要取的source对象的
     */
    String renderField() default "";

    /**
     * 别名
     */
    String alias() default "";

    /**
     * 默认值
     */
    String defaultValue() default "";

    /**
     * 是否校验
     */
    boolean verify() default true;

    /**
     * 帮助文本
     */
    String message() default "";

    /**
     * 字段加载接口数据
     */
    String api() default "";

    /**
     * 自定义枚举
     */
    String customDict() default "";

    /**
     * 可freetext的list的目标字段
     */
    String freetextField() default "";

    /**
     * 可freetext的list的查询API
     */
    String freetextApi() default "";

    /**
     * 从一个对象中引用的属性
     */
    String reference() default "";

    /**
     * row normaliser
     * 行转列的 展示的字段
     * @return
     */
    boolean rnMainKey() default false;

    /**
     * row normaliser
     * 行转列的排序的 字段
     * @return
     */
    boolean rnGroupKey() default false;

    /**
     * 行转列的 key 值 的字段
     * @return
     */
    boolean rnColumKey() default false;

    /**
     * 行转列的 value 值 的字段
     * @return
     */
    boolean rnValueKey() default false;

    String beforeField() default "";

    /**
     * 数据角色来源
     */
    String dataRoleSourceAttribute() default "id";
}

